package model;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;



public class Dao {
	
	HashMap<String, LinkedList<String>> mapa;
	LinkedList<String> frutas;
	LinkedList<String> verduras;
	private File archivoFrutas;
	private File archivoVerduras;
	private File archivoJugadores;
	private Scanner scanerFrutas;
	private Scanner scanerVerduras;
	private Scanner scanerJugadores;
	
	
	//agrega los jugadores a una lista
	public LinkedList<Jugador> obtenerJugadores(){
		Jugador  jugador;
		LinkedList<Jugador> jugadores = new LinkedList<Jugador>();
		archivoJugadores = new File("C:\\Users/Disa/workspace/Practica2JSF/src/files/Jugadores.txt");
		try {
			scanerJugadores = new Scanner(archivoJugadores);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("No se pudo abrir el archivo jugadores");
			e.printStackTrace();
			return null;
		}
		
		while(scanerJugadores.hasNextInt()){
			jugador = new Jugador();
			jugador.setId(scanerJugadores.nextInt());
			jugador.setNombre(scanerJugadores.next());
			jugador.setPartidasGanadas(scanerJugadores.nextInt());
			jugadores.add(jugador);
		}
		scanerJugadores.close();
		return jugadores;
	}
	
	public void updateTable(Jugador jugador){
		LinkedList<Jugador> jugadores = new LinkedList<Jugador>();
		jugadores .addAll(this.obtenerJugadores());
		boolean existe= false;
		for( Jugador j: jugadores){
			if(j.getNombre().equals(jugador.getNombre())){
				j.setPartidasGanadas(j.getPartidasGanadas()+1);
				existe=true;
			}
		}
		if(existe==false){
			System.out.println("El jugador no existe y le setie 1");
			jugador.setPartidasGanadas(1);
			jugadores.add(jugador);
		}
		else{
			System.out.println("El jugador existe y le setie: ");
			jugador.setPartidasGanadas(jugador.getPartidasGanadas()+1);
		}
		
		
		archivoJugadores = new File("C:\\Users/Disa/workspace/Practica2JSF/src/files/Jugadores.txt");
		archivoJugadores.delete();
		PrintWriter bw;
		try {
			bw = new PrintWriter(new FileWriter(archivoJugadores));
			String aux;
			int contador =0;
			for(Jugador j : jugadores){
				contador++;
				j.setId(contador);
				aux = ""+j.getId()+"	"+j.getNombre()+"	"+j.getPartidasGanadas();
				System.out.println(aux);
				bw.println(aux);
			}
			bw.close();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("No se pudo crear el archivo");
			e.printStackTrace();
		};
		
		
		
		
		
	}
	
	//Agrega las frutas y verduras a un mapa 
	public HashMap<String, LinkedList<String>> obtenerCategorias(){
		mapa = new HashMap<String, LinkedList<String>>();
		archivoFrutas = new File("C:\\Users/Disa/workspace/Practica2JSF/src/files/Frutas.txt");
		
		if(archivoFrutas.exists()){
			try {
				scanerFrutas = new Scanner(archivoFrutas);
				frutas = new LinkedList<String>();
			
				while(scanerFrutas.hasNextLine()){
					frutas.add(scanerFrutas.nextLine());
				}
				
			} catch (FileNotFoundException e) {
				System.out.println("No se pudo abirir el archivo de frutas.");
				e.printStackTrace();
			}	
			mapa.put("Frutas", frutas);
			archivoVerduras= new File("C:\\Users/Disa/workspace/Practica2JSF/src/files/Verduras.txt");
			if(archivoVerduras.exists()){
			
				
				try {
					scanerVerduras = new Scanner(archivoVerduras);
					verduras = new LinkedList<String>();
					while(scanerVerduras.hasNextLine()){
						verduras.add(scanerVerduras.nextLine());
					}
					scanerFrutas.close();
					scanerVerduras.close();
					mapa.put("Verduras", verduras);
				} catch (FileNotFoundException e) {
					System.out.println("No se pudo abrir el archivo de verduras");
					e.printStackTrace();
				}
	
				return mapa;
			}
			else{
				return null;
			}
			
		}
		else {
			return null;
		}
	}
	
	
	

}
